# -*- coding: UTF-8 -*-
# 有如下7个方法

import os

# list=[{'new_name': 'wee', 'new_tel': '123', 'new_qq': '234'},
#       {'new_name': 'qww', 'new_tel': '124', 'new_qq': '122'},
#     {'new_name': 'ass', 'new_tel': '145', 'new_qq': '122'}]
list = []

# save_list()
"""打印功能"""
def print_menu():
    print("      学生管理系统 V1.0")
    print(" 1:添加学生")
    print(" 2:删除学生")
    print(" 3:修改学生")
    print(" 4:查询学生")
    print(" 5:显示所有学生")
    print(" 6:保存数据")
    print(" 7:退出系统")
    print("---------------------------")

"""添加学生信息"""
def add_new_info():
    global list
    while True:
        print(" 1:添加学生信息")
        print(" 2:回到初始菜单")
        print("---------------------------")
        menu = input("请输入要进行的操作：")
        if menu == "1":
            dict = {}
            dict["new_name"] = input("请输入姓名:")
            dict["new_tel"] = input("请输入手机号:")
            dict["new_qq"] = input("请输入QQ:")
            if len(list) == 0:
                list.append(dict)
                print("添加成g(现在有一条数据了。。。)")
            else:
                for info in range(len(list)):
                    if list[info]["new_name"] == dict["new_name"]:
                        print("用户名已被占用请重新添加")
                        break
                else:
                    list.append(dict)
                    print("添加成功---")
        elif menu == "2":
            break
        else:
            print("--输入错误, 请重新输入--")
# add_new_info()

"""删除学生信息"""
def del_info():
    global list
    while True:
        # print(list)
        print(" 1:删除学生信息")
        print(" 2:回到初始菜单")
        print("---------------------------")
        menu = input("请输入要进行的操作:")
        if menu == "1":
            del_list = int(input("请输入要删除的序号(数字):"))
            if len(list) == 0:
                print("已经没有数据可以删除了。。。。")
            elif del_list >= len(list):
                print("输入序号为-%d-有误, 请重新输入" % del_list)
            else:
                for info in range(len(list) - 1, -1, -1):
                    if info == del_list:
                        req = input("你确定要删除么? yes or no:")
                        if req == "yes":
                            list.remove(list[info])
                            print("--删除成功--")
                            break
        elif menu == "2":
            break
        else:
            print("--输入错误, 请重新输入--")
# del_info()

"""查询学生信息"""
def search_info():
    while True:
        # print(list)
        print(" 1:查找学生信息")
        print(" 2:回到初始菜单")
        print("---------------------------")
        menu = input("请输入要进行的操作:")
        if menu == "1":
                search_list = input("请输入要查找的学生姓名:")
                for info in range(len(list)):
                    if list[info]["new_name"] == search_list:
                        print("查询到的信息如下:\n", list[info])
                        break
                else :
                    print("没有您要找的信息....")
        elif menu == "2":
            break
        else:
            print("--输入错误, 请重新输入--")
# search_info()

"""修改学生信息"""
def modify_info():
    global list
    while True:
        print(" 1:修改学生信息")
        print(" 2:回到初始菜单")
        print("---------------------------")
        menu = input("请输入要进行的操作:")
        if menu == "1":
            modify_list = int(input("请输入要修改的序号(数字):"))
            if 0 <= modify_list < len(list):
                name = input("请输入新的姓名:")
                tel = input("请输入新的电话:")
                qq = input("请输入新的QQ:")
                print("你要修改的信息是:", list[modify_list])
                if list[modify_list]["new_name"] == name:
                    list[modify_list]["new_name"] = name
                    list[modify_list]["new_tel"] = tel
                    list[modify_list]["new_qq"] = qq
                    print("注意哦名字没有修改哦:", list[modify_list])
                    # break
                for info in range(len(list)):
                    if list[info]["new_name"] == name:
                        print("输入的姓名和之前本身的重复，或者和其他姓名重复")
                        break
                else:
                    list[modify_list]["new_name"] = name
                    list[modify_list]["new_tel"] = tel
                    list[modify_list]["new_qq"] = qq
                    print("--全部修改成功:", list[modify_list])
            else:
                print("输入序号为-%d-有误, 请重新输入" % modify_list)
        elif menu == "2":
            break
        else:
            print("--输入错误，请重新输入--")
# modify_info()

"""遍历学生信息"""
def print_all_info():
    global list
    print("序号\t姓名\t\t手机号\t\tQQ")
    for info in enumerate(list):
        print(info[0],"\t\t",
              info[1]["new_name"], "\t\t",
              info[1]["new_tel"], "\t",
              info[1]["new_qq"])
# print_all_info()

"""保存数据到文件中"""
def save_data():
    global list
# 保存数据下次用
    file = open('ShuJu保存.txt', 'w', encoding="utf-8")
    file.writelines(str(list))
    file.close()
# 为了美观，存的整齐
    file = open("学生管理系统.txt", "w", encoding="utf-8")
    file.write("序号\t姓名\t手机号\tQQ")
    file.write("\n")
    for info in range(len(list)):
        file.write(str(info))
        file.write("\t\t")
        file.write(list[info]["new_name"])
        file.write("\t\t")
        file.write(list[info]["new_tel"])
        file.write("\t\t")
        file.write(list[info]["new_qq"])
        file.write("\t\t")
        file.write("\n")
    file.close()

# save_data()

"""加载之前存储的数据"""
def load_data():
    global list
# 为了打出来美观方便看
    file = open("学生管理系统.txt", "r", encoding="utf-8")
    print(file.read())
    file.close()
# 存到另一个表为了下次接着用之前数据
    file = open('ShuJu保存.txt', 'r')
    ret = file.read()
    list = eval(ret) # 文档里没有数据就会报错
    file.close()
# load_data()


def main():
    """用来控制整个流程"""

    # 加载数据（1次即可）
    load_data()

    while True:
        # 1. 打印功能
        print_menu()

        # 2. 获取用户的选择
        num = input("请输入要进行的操作(数字):")

        # 3. 根据用户选择,做相应的事情
        if num == "1":
            # 添加学生
            add_new_info()
        elif num == "2":
            # 删除学生
            del_info()
        elif num == "3":
            # 修改学生
            modify_info()
        elif num == "4":
            # 查询学生
            search_info()
        elif num == "5":
            # 遍历所有的信息
            print_all_info()
        elif num == "6":
            # 保存数据到文件中
            save_data()
        elif num == "7":
            # 退出系统
            exit_flag = input("亲, 你确定要退出么?~~~~(>_<)~~~~(yes or no) ")
            if exit_flag == "yes":
                break
        else:
            print("输入有误, 请重新输入......")

        input("\n\n\n按回车键继续....")
# 程序的开始
main()


